Kotlin 实战笔记
集合
Kotlin 的集合分为可变集合和不可变集合,不可变集合类似 Java 中的 List、Set、Map,而可变集合如 MutableList
1 | val set1 = setOf(1, 2, 3) |
默认参数值
Kotlin 中声明的函数可以指定默认的参数值:
1 | fun <T> joinToString( |
上面这个例子中 joinToString(list, "", "", "")
的调用可以做得更优雅:
1 | //调用时标明参数的名称 |
注意:在调用一个函数时,如果指定了一个参数名称,那么之后的所有参数都需要标明名称:
1 | //正确示例 |
顶层函数和属性
在 Kotlin 中可以直接在一个 Kotlin 文件声明函数和属性,不必像 Java 那样必须在类中才能声明属性和方法。
1 | //文件名:KotlinTest.kt |
看看编译后生成的文件:
1 | //类名就是文件名 |
拓展函数和属性
拓展函数
Kotlin 可以在不修改源代码的情况下给原有的类添加函数,即拓展函数。
新建一个 kotlin 文件 StringUtil.kt:
1 | /** |
上面代码给 String 这个类拓展了一个返回最后一个字符的函数,用法和其他普通函数一样:
1 | print("Kotlin".lastChar()) |
编译后生成的 Java 文件:
1 | public final class StringUtilKt { |
所以,如果是在 Java 中调用的话就是这样:
1 | System.out.println(StringUtilKt.lastChar("Java")); |
此外,拓展函数不能被重写,举个例子:
1 | open class View { |
注意:如果一个类的成员函数和拓展函数有相同的函数名,成员函数会被优先使用
拓展属性
和拓展属性类似,可以给已存在的类添加拓展属性。
在拓展函数的例子中添加拓展属性:
1 | /** |
可变参数
Kotlin 中可变参数的定义和使用与 Java 有点不同:
1 | // 用 vararg 来声明可变参数 |
看看编译后的文件:
1 | public static final void test(@NotNull String... value) { |
所以如果在 Java 中去调用 Kotlin 定义的可变参数,使用方式还是和以前一样的。